package uk.ac.ebi.bioinvindex.dao;


import uk.ac.ebi.bioinvindex.model.impl.MaterialImpl;
import uk.ac.ebi.bioinvindex.model.impl.StudyImpl;
import uk.ac.ebi.bioinvindex.model.impl.term.MaterialRoleImpl;
import uk.ac.ebi.bioinvindex.model.impl.term.PropertyImpl;
import uk.ac.ebi.bioinvindex.model.impl.term.PropertyValueImpl;

import java.util.Collection;
import java.util.List;

/**
 * User: Nataliya Sklyar (nsklyar@ebi.ac.uk)
 * Date: Jun 22, 2007
 */
public interface StudyDAO extends AnnotatableDAO<StudyImpl> {

	public List<MaterialImpl> getMaterialsOfType(Long studyId, MaterialRoleImpl materialRole);

	public List<StudyImpl> findByProperty(QueryParameter queryParameter);

	public List<StudyImpl> filterByProperty(Collection<Long> ids, QueryParameter queryParameter);

	public List<PropertyImpl> getFactorsForStudy(Long studyId);

	public List<PropertyValueImpl> getValuesOfProperty(Long studyId, String propertyName);

	public List<PropertyValueImpl> getValuesOfProperty(String propertyName);

	public List<StudyImpl> filterByPropertyNameValue(String propertyName, String propertyValue);
}
